import pandas as pd
from matplotlib import pyplot as plt

# 1、读取天气数据到dataframe
def date_handle():
    filepath = "../datas/beijing_tianqi/beijing_tianqi_2018.csv"
    df = pd.read_csv(filepath)
    df.loc[:,"bWendu"] = df["bWendu"].str.replace("℃","").astype("int32")
    df.loc[:,"yWendu"] = df["yWendu"].str.replace("℃","").astype("int32")
    # 2、将日期列转换成pandas的日期¶
    # 设置日期列 索引
    df.set_index(pd.to_datetime(df['ymd']),inplace=True)
    # 查看 dataframe
    print(df.index)
    print("-------------------------------------------")
    # DatetimeIndex是Timestamp的列表形式
    # print(df.index[0])
    # 3、 方便的对DatetimeIndex进行查询¶
    # 筛选固定的某一天
    print(df.loc['2018-10-02'])
    print("-------------------------------------")
    # 筛选 某个时间段
    print(df.loc["2018-10-01":"2018-10-05"])
    print("--------------------------------------")
    # 按月份前缀筛选
    print(df.loc["2018-10"])
    # 按月份前缀筛选
    print(df.loc['2018-07':'2018-09'].index)
    # 按年份前缀筛选
    print(df.loc["2018"])
    # 4、方便的获取周、月、季度
    # Timestamp、DatetimeIndex支持大量的属性可以获取日期分量：
    #周、月、季度
    print(df.index.isocalendar().week)
    print(df.index.month)
    print(df.index.quarter)
    print("-----------------------------------------------")
    # 5、统计每周、每月、每个季度的最高温度¶
    # 统计每周的数据
    print(df.groupby(df.index.isocalendar().week)['bWendu'].max().head())
    # 生成 统计图
    df.groupby(df.index.isocalendar().week)['bWendu'].max().plot()
    plt.show()
    # 统计每个月的数据
    df.groupby(df.index.month)['bWendu'].max().plot()
    plt.show()

    # 统计每个季度的数据
    df.groupby(df.index.quarter)['bWendu'].max().plot()
    plt.show()

    
if __name__ == "__main__":
    date_handle()